# coding: UTF-8
# @Date    ：2024/10/17 11:24 
# @File    : cron.py
# :Author:  fum
from apscheduler.triggers.cron import CronTrigger


def get_cron(key, config=True) -> CronTrigger:
    """
    解析 cron 表达式: 秒 分钟 小时 天 周 月 年
    :param config:
    :param key:
    :return:
    """
    # 按空格分割字符串
    if config:
        from configs import CONFIG
        value = CONFIG.get(key)
        if not value:
            raise ValueError("cron config is empty")
    # 按空格分割字符串
    else:
        value = key
    s_parts = value.split()
    if len(s_parts) != 7:
        raise ValueError("Invalid cron expression")
    cron = {
        "second": s_parts[0],  # 秒
        "minute": s_parts[1],  # 分钟
        "hour": s_parts[2],  # 小时
        "day": s_parts[3],  # 每月的第几天
        "day_of_week": s_parts[4],  # 每周的星期几
        "month": s_parts[5],  # 月份
        "year": s_parts[6]  # 年份
    }
    return CronTrigger(**cron)
